//#include<thread>
#include<iostream>
#include<unistd.h>
#include<cstdlib>
#include<pthread.h>
#include<sys/types.h>
#include <sys/syscall.h>

//C++11内部的多线程
//
//
int _val = 100;//全局变量被所有线程共享
__thread int g_val = 100;//线程的局部存储(全局变量在每个线程创建一份)
__thread pid_t lwp = 0;

pid_t gettid(){
    return syscall(SYS_gettid);
}
void *threadrout(void *argc)
{
    lwp = gettid();//调用系统调用SYS_gettid获取当前线程的tid
    while(true){
        std::cout << "val" << _val<< std::endl;
        _val ++;
        sleep(1);
    }
    return nullptr;
} 
int main()
{
    pthread_t tid;
    pthread_create(&tid,nullptr,threadrout,(void*)"thread1");
    while (true)
    {
        std::cout << "main val" << _val << std::endl;
        sleep(1);
    }
    pthread_join(tid,nullptr);

    return 0;
}

// void myrun(){
//     while (true)
//     {
//         std::cout << "i am a thread" << std::endl;
//         sleep(1);
//     }
// }

// int main(){
//     std::thread t(myrun);
//     t.join();
//     return 0;
// }
